home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / news / readers / skim-0.8 / skim-0 / skim-0.8.4 / Article.h < prev    next >
C/C++ Source or Header  |  1996-02-18  |  5KB  |  176 lines

  1. /*
  2.  * NAME
  3.  *   Article.h
  4.  * DESCRIPTION
  5.  *   Interface include file of the Article class and its component classes.
  6.  * COPYRIGHT
  7.  *   Skim - Off-line news reading package optimized for slow lines.
  8.  *   Copyright (C) 1996  Rene W.J. Pijlman
  9.  *
  10.  *   This program is free software; you can redistribute it and/or modify
  11.  *   it under the terms of the GNU General Public License as published by
  12.  *   the Free Software Foundation; either version 2 of the License, or
  13.  *   (at your option) any later version.
  14.  * 
  15.  *   This program is distributed in the hope that it will be useful,
  16.  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  17.  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  18.  *   GNU General Public License for more details.
  19.  * 
  20.  *   You should have received a copy of the GNU General Public License
  21.  *   along with this program; if not, write to the Free Software
  22.  *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  23.  * VERSION
  24.  *   Skim version 0.8.4.
  25.  */
  26.  
  27. #include "VarBuf.h"
  28.  
  29. /*
  30.  * The type or name of the headerline is represented with a character string
  31.  * instead of an enum, since it must be possible to represent incoming articles
  32.  * with unknown header lines.
  33.  */
  34. typedef const char *
  35. HeaderNameType;
  36.  
  37. typedef struct _HeaderLine *
  38. HeaderLine;
  39.  
  40. typedef struct _Header *
  41. Header;
  42.  
  43. typedef struct _Body *
  44. Body;
  45.  
  46. typedef struct _Article *
  47. Article;
  48.  
  49. /* The header lines defined by RFC 1036. */
  50. #define HL_APPROVED      "Approved"
  51. #define HL_CONTROL       "Control"
  52. #define HL_DATE          "Date"
  53. #define HL_DISTRIBUTION  "Distribution"
  54. #define HL_EXPIRES       "Expires"
  55. #define HL_FOLLOWUP_TO   "Followup-To"
  56. #define HL_FROM          "From"
  57. #define HL_KEYWORDS      "Keywords"
  58. #define HL_LINES         "Lines"
  59. #define HL_MESSAGE_ID    "Message-ID"
  60. #define HL_NEWSGROUPS    "Newsgroups"
  61. #define HL_ORGANIZATION  "Organization"
  62. #define HL_PATH          "Path"
  63. #define HL_REFERENCES    "References"
  64. #define HL_REPLY_TO      "Reply-To"
  65. #define HL_SENDER        "Sender"
  66. #define HL_SUBJECT       "Subject"
  67. #define HL_SUMMARY       "Summary"
  68. #define HL_XREF          "Xref"
  69.  
  70. /* Other header lines. */
  71. #define HL_X_NEWSREADER  "X-Newsreader"
  72.  
  73. #define RE_PREFIX     "Re:"
  74. #define QUOTE_INDENT  ">"
  75. #define DEFAULT_BODY_FOR_NEW_ARTICLE \
  76. "The blank line above separates the header from the body. Don't remove it.\n\
  77. Only the \"Newsgroups:\" and \"Subject:\" header lines may be edited.\n"
  78.  
  79.  
  80. Boolean HeaderLineIsMandatory( HeaderNameType );
  81.  
  82. /*
  83.  * The Article class.
  84.  */
  85.  
  86. /* Create, Destroy */
  87. Article ArticleCreate( void );
  88. Article ArticleConstructNew(
  89.     VarBuf, VarBuf, VarBuf, VarBuf, VarBuf, VarBuf, VarBuf, VarBuf );
  90. Article ArticleConstructReply(
  91.     Article, VarBuf, VarBuf, VarBuf, VarBuf, VarBuf, VarBuf );
  92. void ArticleDestroy( Article );
  93.  
  94. /* Check */
  95. Boolean ArticleIsOK( Article );
  96. Boolean ArticleIsOKAndComplete(Article);
  97. VarBuf ArticleGetErrorMessages( Article );
  98.  
  99. /* Queries. */
  100. Boolean ArticleContainsHeaderLine( Article, HeaderNameType );
  101.  
  102. /* Get components or values. */
  103. VarBuf ArticleGetHeaderLineValue( Article , HeaderNameType );
  104. VarBuf ArticleGetVB( Article );
  105.  
  106. /* Set components or values. */
  107. void ArticleSetHeaderLine( Article, HeaderNameType, VarBuf );
  108. void ArticleSetBody( Article, VarBuf );
  109. void ArticleSetVB( Article, VarBuf );
  110. void ArticleSetDateToCurrentDate( Article );
  111. void ArticleSynchronizeNumberOfLines( Article );
  112. void ArticlePrepareForPost( Article, VarBuf, VarBuf, VarBuf, VarBuf, VarBuf );
  113.  
  114. /*
  115.  * The Header class.
  116.  */
  117.  
  118. /* Create, Destroy */
  119. Header HeaderCreate( void );
  120. void HeaderDestroy( Header );
  121.  
  122. /* Check */
  123. Boolean HeaderIsOK( Header );
  124. Boolean HeaderIsOKAndComplete( Header );
  125. VarBuf HeaderGetErrorMessages( Header );
  126.  
  127. /* Queries. */
  128. Boolean HeaderContainsHeaderLine( Header, HeaderNameType );
  129.  
  130. /* Get components or values. */
  131. VarBuf HeaderGetVB( Header );
  132. VarBuf HeaderGetHeaderLineValue( Header, HeaderNameType );
  133.  
  134. /* Set components or values. */
  135. void HeaderSetHeaderLine( Header, HeaderNameType, VarBuf );
  136.  
  137. /*
  138.  * The HeaderLine class.
  139.  */
  140.  
  141. /* Create, Destroy */
  142. HeaderLine HeaderLineCreate( void );
  143. void HeaderLineDestroy( HeaderLine );
  144.  
  145. /* Check */
  146. Boolean HeaderLineIsOK( HeaderLine );
  147.  
  148. /* Queries. */
  149.  
  150. /* Get components or values. */
  151.  
  152. /* Set components or values. */
  153. void HeaderLineSet( HeaderLine, HeaderNameType, VarBuf );
  154. void HeaderSetDateToCurrentDate( Header );
  155.  
  156. /*
  157.  * The Body class.
  158.  */
  159.  
  160. /* Create, Destroy */
  161. Body BodyCreate( void );
  162. void BodyDestroy( Body );
  163.  
  164. /* Check */
  165. Boolean BodyIsOK( Body );
  166. VarBuf BodyGetErrorMessages( Body );
  167.  
  168. /* Queries. */
  169. Natural BodyNumnerOfLines( Body );
  170.  
  171. /* Get components or values. */
  172. VarBuf BodyGetValue( Body );
  173.  
  174. /* Set components or values. */
  175. void BodySetValue( Body, VarBuf );
  176.